#include<iostream>
#include<sys/ipc.h>
#include<sys/shm.h>
#include"comm.hpp"
#include<unistd.h>
using namespace std;

//共享内存创建者，发送端
int main()
{
    //创建共享内存
    int shm_id=shmget(getKey(),1024,IPC_CREAT|IPC_EXCL);//不存在，创建；存在，报错
    if(shm_id==-1)
    {
        cerr<<"共享内存创建失败"<<endl;
        return 0;
    }
    cout<<"创建共享内存成功"<<endl;
    sleep(5);
    //挂接到地址空间
    char* shm_ptr_start=(char*)shmat(shm_id,nullptr,0);
    if(shm_ptr_start==(void*)-1)
    {
        cerr<<"共享内存挂接失败"<<endl;
        return 0;
    }
    cout<<"共享内存挂接成功"<<endl;
    sleep(5);
    //开始通信
    
    for(char c='a';c<'z';c++)
    {
        sleep(1);
        shm_ptr_start[c-'a']=c;
    }


    shmdt(shm_ptr_start);
    cout<<"共享内存取消挂接成功"<<endl;
    sleep(5);
    
    shmctl(shm_id,IPC_RMID,nullptr);
    cout<<"共享内存释放成功"<<endl;
    sleep(5);
    

    return 0;
}